A server receives a request for real time processing from a client. This request requires the server to carry out continuous processing while providing blocks of processed data to the client. Data blocks are streamed from the server to the client, which plays these data blocks continuously.
In a problem-free scenario, server-side processing is capable of providing blocks continuously to the client. Depending on the data that is being streamed, a client might be set up to buffer none, all, or a specified number of data blocks before allowing play to take place.
A server is expected to experience times under stress; for example, when bandwidth is low or CPU usage is high. This is likely to impact the server's ability to process and stream data continuously. To some extent buffering provides a solution to this problem. However, a static client side buffer does not take the server's current workload or network bandwidth into consideration.
The outcome, with regard to the client-side, can be variable. Two likely scenarios follow. In the first, the client stores additional data, effectively waiting for all requested data to arrive before commencing play. The implication for the client end user is that they must wait an undesirable length of time between requesting and receiving play of data. In the second scenario, inadequate data is stored by the client, and buffer under-run occurs. Consequently, the end user experiences interruptions in play.
Sizing a text-to-speech (TTS) system is not trivial. If the size of the TTS data transmission is calculated incorrectly, several problems can occur. With the client system under stress, the quality of the TTS is greatly reduced. If the TTS server is under stress, then the TTS can be played to the caller in bits, which would seem unnatural. If the client system (typically an interactive voice response system) detects under-run, then the whole prompt could be replayed. In all cases the caller suffers a negative experience of the system and is less likely to use the system in the future.
U.S. Pat. No. 6,766,407, “Intelligent streaming framework,” describes a streaming framework manager that coordinates elements of a streaming solution based on the analysis of the properties of a particular connection. The patent does not consider the streaming generator workload.
U.S. Pat. No. 6,112,239, “System and method for server-side optimization of data delivery on a distributed computer network,” involves server-side optimization and network performance information. This patent is concerned with redirecting data to various delivery sites and servers, in accordance with network information.
EP patent publication 1182875, “Streaming method and corresponding system,” is described in terms of negotiation driven by the client capacities rather than from the server, but involves optimization to avoid buffer underflow and overflow. Changes in transmission capacity are detected and reacted to. The client terminal is responsible for using transmission capacity to calculate an appropriate buffer level and delay, and consequently instructing the server to transmit at a particular rate. However, the server performance is not considered.